package cn.spiral.role.service.impl;

import java.io.Serializable;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.spiral.core.service.impl.BaseServiceImpl;
import cn.spiral.role.dao.RoleDao;
import cn.spiral.role.entity.Role;
import cn.spiral.role.service.RoleService;

@Service("roleService")
public class RoleServiceImpl extends BaseServiceImpl<Role> implements RoleService {

	private RoleDao roleDao;
	
	@Autowired
	public void setRoleDao(RoleDao roleDao) {
		super.setBaseDao(roleDao);
		this.roleDao = roleDao;
	}

	@Override
	public void update(Role role) {
		//因为RolePrivilege表中数据是通过hibernate的级联操作创建的多条记录，其中Role冗余，与权限id共同构成主键，无法进行常规更新操作，所以在更新Role表时，除非删除角色，否则是不会删除RolePrivilege表中对应数据
		//所以要先删除RolePrivilege表中关于角色id的数据，然后再通过update重新添加
		roleDao.deleteRolePrivilegeByRoleId(role.getRoleId());
		//2、更新角色及其权限
		roleDao.update(role);
	}

}
